home *** CD-ROM | disk | FTP | other *** search
- THINK PASCAL 3.0.1/TCL ONLINE UPDATE PACKAGE
- ============================================
- 5/15/90
-
- INTRODUCTION
- ============
- This update package corrects some bugs in THINK Pascal 3.0 and some
- minor bugs in the Pascal version of the THINK Class Library.
-
- WHAT’S IN THE UPDATE PACKAGE
- ============================
- This update package contains an applications that updates your existing
- THINK Pascal 3.0 to THINK Pascal 3.0.1 and a folder that contains files
- to update the THINK Class Library.
-
- • All THINK Pascal 3.0 users should update to
- THINK Pascal 3.0.1.
-
- • All THINK Pascal 3.0 users who use the
- THINK Class Library should apply the TCL Update.
-
- The sections that follow tell you how to update THINK Pascal and the
- THINK Class Library and what bugs the updates fix.
-
-
- THINK PASCAL 3.0.1 UPDATE
- =========================
- This update transforms your existing THINK Pascal 3.0 application
- to THINK Pascal 3.0.1.
-
- Installing the Update
- ---------------------
- 0. Make sure that you have your original THINK Pascal
- application. You won't need it for this update, but you
- should make sure that you have a backup in case the update
- fails.
-
- 1. Double-click on the patch program THINK Pascal -> 3.0.1 to
- launch it. Click on the Update THINK Pascal button to continue.
-
- 2. Find your existing copy of THINK Pascal in your THINK Pascal
- Folder. Select it and click on the Patch button.
-
- If you use a virus intercept program, such as SAM, it may warn
- you that THINK Pascal -> 3.0.1 is modifying code resources.
- Allow these changes.
-
-
- What This Update Changes
- ------------------------
- These are the bugs fixed in version 3.0.1:
-
- • If a PACKED ARRAY OF Boolean had a lower bound which was not
- modulo 8, the wrong bit in the array would be stored and fetched.
- For example:
-
- VAR
- bits : PACKED ARRAY [0..15] OF Boolean;
-
- worked OK, whereas
-
- VAR
- bits : PACKED ARRAY [1..16] OF Boolean;
-
- did not.
-
- • An attempt to store a non-immediate value to an element of a
- PACKED ARRAY OF Boolean would result in a bit being changed
- in random memory if the value was FALSE:
-
- bits[4] := TRUE; { worked }
- bits[4] := FALSE; { worked }
- bits[4] := bool; { worked if bool was TRUE, failed }
- { if bool was FALSE. }
-
- • Attempting to use an element of a PACKED ARRAY OF Boolean as an
- argument to one of the intrinsic bit-manipulation functions
- (BAND, BOR, etc) crashed the compiler. This happened most often
- in code ported from THINK Pascal 2.0 which dealt with variables
- of type KeyMap. KeyMaps were previously arrays of four LongInts,
- so it was necessary to BAND an element of a KeyMap with a mask
- value to test the desired bit.
-
- •• IMPORTANT
- Although the compiler will no longer crash, the result
- from BAND(myKeyMap[n], m) will NOT be the result
- you're looking for. You should just perform a Boolean
- test on the required element of the KeyMap.
-
- • When using an object-type result of a method function call as the
- target of a WITH statement, incorrect code was generated. For
- example:
-
- WITH MethodFunc(args) DO
- ResultsMethod(moreArgs);
-
- The result of MethodFunc was not properly removed from the stack
- before pushing moreArgs and calling ResultsMethod. This error usually
- caused a bus error or method not found.
-
- • When indexing a multidimensional array whose aggregate size was >32K
- with an immediate index, the wrong code would be generated if the
- column offset was less than 32K into the column, but greater than 32K
- into the array.
-
- Consider:
-
- TYPE BigArray = array[1..7, 1..648] of Double;
- PBigArray = ^BigArray;
-
- var
- pb : PBigArray;
-
- ...
-
- pb^[7, 209] := PI; { 209 is within 32K of pb^[7], but }
- { greater than 32K away from pb^[1].}
-
- • Havoc would ensue if a program attempted to call LoadSeg on a
- segment which was already loaded and locked in memory. An example
- of this behavior is the PreloadSegment routine found in
- MacApp versions later than 2.0b10.
-
- • Occasionally, THINK Pascal would get confused and believe that the
- Instant and Observe windows had been checked out from Projector
- read-only, which precluded typing anything into them.
-
-
- THINK CLASS LIBRARY UPDATE
- ==========================
- This update fixes some minor bugs in the THINK Class Library.
-
- This update uses a program called AutoWeave to create new TCL source files
- from your existing files. It applies a set of "differences" files to the
- original THINK Class Library source files that came with your THINK Pascal
- package to create new updated source files.
-
- There are two things to watch out for:
-
- • The AutoWeave program assumes that you have not changed
- how the THINK Class Library source files are organized.
- All of the TCL source files should be a folder called
- THINK Class Library which should contain two folders called
- Core Classes and More Classes. The Starter and TinyEdit
- demos should be in a folder called TCL Demos, and the
- Art Class demo should be in a folder called Art Class Folder.
-
- • If you modified any of the original source files, you
- should move them to a different folder or rename them.
- Otherwise, the AutoWeave program will replace them with
- updated versions, and your changes will be lost.
-
-
- INSTALLING THE UPDATE
- ---------------------
- •• Please read these instructions before you begin.
-
- 0. Be sure that you have your original disk THINK Pascal 2 from your
- THINK Pascal 3.0 package. Make sure the disk is write-protected.
-
- 1. Double-click on the file named "TCL Update.Script" to launch
- the AutoWeave program.
-
- 2. The AutoWeave program will ask you to locate the original "THINK
- Class Library" folder. Insert your THINK Pascal 2 disk in the
- floppy drive, choose the folder "THINK Class Library" and click OK.
-
- 3. The AutoWeave program will ask you to locate your copy of the
- "THINK Class Library" folder. If you followed the installation
- instructions in your THINK Pascal 3.0 User's Manual, this folder
- is in your THINK Pascal Folder.
-
- 4. The AutoWeave program will ask you to locate the "TCL Diffs"
- folder. This folder is supplied as part of this update.
- Select this folder and click OK.
-
- 5. The AutoWeave program will now modify the appropriate files,
- keeping you informed of its progress. When it has finished,
- you may want to check one or two of the files, to make sure
- that everything worked. (For example, if you chose the
- wrong Diffs folder in step 4, the Weaver wouldn't actually
- do anything, although it might act like it did.)
-
- To update the TCL Demos double-click on the file "TCL Demos Update.Script"
- and follow the instructions above.
-
- To update the Art Class demo, double-click on the file "Art Class Update.Script"
- and follow the instructions. The original Art Class Folder is on disk
- THINK Pascal 3
-
-
- WHAT’S IN THE UPDATE
- --------------------
- 1. CBartender.p
- ParseItemString now initializes cmdStr to nullStr.
-
- 2. CButton.p
- IButton now adjusts hEncl and vEncl to account for its enclosure's
- origin.
-
- 3. CEditText.p
- Modified DoClick to fix activation problem with multiple EditText
- fields within a pane.
-
- 4. CError.p
- SevereMacError method: the errMsg handle is now initialized properly.
- MissingResources method: now uses GetOSEvent to wait for mouseDown
- or keyDown.
-
- 5. CPane.p
- FrameToGlobalR method has been corrected. (Warning: this method
- doesn't work if the window is not visible.)
-
- 6. CResFile.p
- Open method now calls HOpenResFile instead of HOpenRF.
-
- 7. CWindow.p
- FrameToGlobalR method has been corrected. (Warning: this method
- doesn't work if the window is not visible.)
-
- 8. The TCL no longer passes object instance variables to the NEW procedure.
- This used to cause problems with Heap Scramble on
-
- TCL files changed:
- CApplication.p
- CBitMapPane.p
- CCharGrid.p
- CClipboard.p
- CDesktop.p
- CDocument.p
- CRadioGroup.p
- CScrollPane.p
- CFWDesktop.p
- CTearOffMenu.p
- CView.p
-
- TCL Demo files changed:
- CStarterDoc.p
- CEditDoc.p
- CAboutBox.p
- CArtClassApp.p
- CArtClassDoc.p
- CPaintPane.p
- CPaintTask.p
- CToolPens.p
- CToolText.p